p->next->num为什么不等于*(p->next)

来源:百度知道 编辑:UC知道 时间:2024/05/31 03:01:08
struct student
{
int num;
STD *next;
}
假如创建一个链表 数据分别是1 2 3 0
当p位于2的时候p->next->num应该是3 但是为什么*(p->next)却错误呢??
我觉得理论上正确啊 p->next指向3接点的第一个地址 也是3接点的num位置的头地址 然后进行*()操作应该将其输出啊 为什么就错误呢?

不是 p->next是当前的地址 指向下一个节点
*(p->next)就是地址的地址 就差远了
你得理解链表
每个节点 有一个 数据 和指针域
看看C语言书 就明白了 不容易的 仔细揣摩

恩,没错,的确是这样的。
但是你要用*(p->next)这个方式输出3的话……
结构体不支持输出操作,如果你想直接输出,就要用到操作符重载
当然,有一个简单的方法:强制类型转换,把结构体指针转换为int型指针。
cout<<*(int*)(p->next);//c++版本;
或者
printf("%d",*(int*)(p->next));//c版本……
这样就能输出3了